package com.qkl.user.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.time.LocalDateTime;

@Data
@TableName(value = "matrix_relations")
public class MatrixRelation {
    public static final int POSITION_LEFT = 1;
    public static final int POSITION_RIGHT = 2;
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    private Long userId;
    private Long parentId;
    private Integer position;    // 1=左，2=右，0=根
    private Integer level;
    private Long leftChildId;    // 左下级
    private Long rightChildId;   // 右下级

    private LocalDateTime createTime;
    private LocalDateTime updateTime;

//    private Integer umbrellaLevel;  // 相对于根节点的伞下层级（如：A是根=1，a1是A的伞下1层=1，b1是A的伞下2层=2）
    // 注意：若支持“查询任意节点的伞下层级”，需改为存储“路径”（见新增2）

    private String path;            // 节点路径（如：A的path="1", a1（A左）="1-1", b1（a1左）="1-1-1", a2（A右）="1-2"）
    // 作用：计算任意节点X相对于节点Y的伞下层级 = X.path.split("-").length - Y.path.split("-").length
    // 例：Y是a1（path="1-1"），X是b1（path="1-1-1"）→ 伞下层级=3-2=1

    private String childIndex;      // 存储所有子节点的userId，用逗号分隔（如：A有a1、a2→"101,102"；a1有b1→"103"）
    // 作用：快速获取节点的直接子节点，无需查left/rightChildId
}
//public class MatrixRelation {
//    public static final int POSITION_LEFT = 1;
//    public static final int POSITION_RIGHT = 2;
//    @TableId(type = IdType.ASSIGN_ID)
//    private Long id;
//    private Long userId;
//    private Long parentId;
//    private String path;
//    private Integer level;
//    private Long leftChildId;    // 左下级
//    private Long rightChildId;   // 右下级
//    private Integer hasChildren;
//    private LocalDateTime createdAt;
//    private LocalDateTime updatedAt;
//
//
//}
